Plotting

Auswertung Emprischer Daten

Prof. Dr. David F. Urschler

Vorgehen



flowchart LR
A(Daten einlesen) --> B(Übersicht verschaffen) --> C(Namen brauchbar machen) --> D(Ergeben die Daten Sinn?) --> E(Skalenwerte berechnen) --> F(...) --> G(Berichten der Ergebnisse)

style G fill: #009e73

Wie können wir Daten präsentieren?

  • Urliste

  • Tabellen

  • Statistische Kennwerte

  • grafisch

Wie können wir Daten präsentieren?

ggplot2-Package



ggplot2-Package

Beispiele

Albert Rapp

ggplot2-Package

Beispiele

Georgios Karamanis

ggplot2-Package

Beispiele

Tanya Shapiro

ggplot2-Package

Beispiele

ggplot2-Package

Ressourcen

ggplot2-Package

Grundidee

  1. Wir erstellen eine “Leinwand”
  2. Auf der “Leinwand” werden Daten dargestellt
  3. Daten können unterschiedlich dargestellt werden - welch Überraschung!
  4. Die Darstellung erfolgt in “Schichten”
  5. Feinjustierung

ggplot2-Package

Grundidee

  1. Erstellen einer “Leinwand”

ggplot()-Funktion

ggplot()

ggplot2-Package

Grundidee

  1. Darstellen von Daten
ggplot(data = mpg) # Welcher Datensatz soll dargestellt werden?

ggplot2-Package

Grundidee

  1. Darstellen von Daten
ggplot(data = mpg,   
       aes(x = class,  # Daten die auf der X-Achse dargestellt werden
           y = hwy))   # Daten die auf der Y-Achse dargestellt werden

ggplot2-Package

Grundidee

  1. Unterschiedliche Darstellung der Daten
ggplot(data = mpg,   
       aes(x = class,
           y = hwy)) + # "+" bedeuetet, dass zur Leinwand ewtas hinzugefügt werden soll
  geom_point()         # Jeder Messwert wird als Punkt dargestellt

ggplot2-Package

Grundidee

  1. Unterschiedliche Darstellung der Daten
ggplot(data = mpg,   
       aes(x = class,
           y = hwy)) + 
  geom_col()           # Die absoluten Summenhäufigkeiten werden dargestellt

ggplot2-Package

Grundidee

  1. Unterschiedliche Darstellung der Daten
ggplot(data = mpg,   
       aes(x = class,
           y = hwy)) + 
  geom_boxplot() # Die Boxplots werden dargestellt

ggplot2-Package

Grundidee

  1. Darstellen in “Schichten”
ggplot(data = mpg,   
       aes(x = class,  
           y = hwy)) +
  geom_boxplot() + # Zunächst wird der Boxplot erstellt
  geom_jitter()    # Über dem Boxplot werden die einzelnen Messwerte noch als Punkte dargestellt

ggplot2-Package

Grundidee

  1. Darstellen in “Schichten”
ggplot(data = mpg,   
       aes(x = class,  
           y = hwy)) +
  geom_jitter() +   # Zunächst werden die einzelnen Messwerte als Punkte dargestellt
  geom_boxplot()    # Über den Punkten werden die Boxplots erstellt

ggplot2-Package

Grundidee

  1. Feinjustierung

ggplot2-Package

Grundidee

  1. Feinjustierung

ggplot2-Package

Was brauchen wir?

  • Data
  • Aesthetic mappings, um Daten zu übertragen
  • Geometrische Objekte, die wir sehen wollen
  • Statistics, um Daten die wir visualisieren wollen
  • Coordinates, um unseren Plot auszurichten
  • Scales, um zu zeigen welche Werte wir plotten
  • Facets, um den den Plot in kleinere aufzuteilen

HILFE!

ggplot2-Package

Was brauchen wir? - ein Beispiel

Data - “aufgeräumte” Daten


“untidy”
Land Jung Alt
D 100 110
A 200 220
CH 300 320
“tidy”
Land Alter Ausgaben
D Jung 100
D Alt 110
A Jung 200
A Alt 220
CH Jung 300
CH Alt 320

ggplot2-Package

Was brauchen wir? - ein Beispiel

Aesthetic mappings

Wir müssen unsere Daten in visuelle Elemente übertragen.

  • Ausgaben
  • Alter
  • Land

ggplot2-Package

Was brauchen wir? - ein Beispiel

Aesthetic mappings

Wir müssen unsere Daten in visuelle Elemente übertragen.

Beispielsweise

  • Aausgaben ➜ y-Achse
  • Alter ➜ x-Achse
  • Land ➜ Form, Farbe, etc.

ggplot2-Package

Was brauchen wir? - ein Beispiel

Geometrische Objekte

Welche geometrischen Objekte sollen dargestellt werden?

ggplot2-Package

Was brauchen wir? - ein Beispiel

Unser erster Plot - hurra

ggplot(ds)

ggplot2-Package

Was brauchen wir? - ein Beispiel

ggplot(ds, 
       aes(x = Alter,
           y = Ausgaben))

ggplot2-Package

Was brauchen wir? - ein Beispiel

ggplot(ds, 
        aes(x = Alter,
            y = Ausgaben)) +
  geom_point()

ggplot2-Package

Was brauchen wir? - ein Beispiel

ggplot(ds, 
        aes(x = Alter,
            y = Ausgaben,
            color = Land)) +
  geom_point() 

ggplot2-Package

Was brauchen wir? - ein Beispiel

Unser erster Plot

ggplot(ds, 
        aes(x = Alter,
            y = Ausgaben,
            color = Land))  +
  geom_point() +
  geom_line(aes(group = Land))

ggplot2-Package

Was brauchen wir? - ein Beispiel

Facets

ggplot(ds, 
       aes(x = Alter,
           y = Ausgaben,
           color = Land))  +
  geom_point() +
  geom_line(aes(group = Land)) +
  facet_wrap(~ Land)

ggplot2-Package

Was brauchen wir? - ein Beispiel

Coordinates

ggplot(ds, 
        aes(x = Alter,
            y = Ausgaben,
            color = Land))  +
  geom_point() +
  geom_line(aes(group = Land)) +
  coord_flip()

ggplot2-Package

Was brauchen wir? - ein Beispiel

Geht das auch in schön(er)?

ggplot(ds, 
        aes(x = Alter,
            y = Ausgaben,
            color = Land))  +
  geom_point() +
  geom_line(aes(group = Land)) +
  theme_bw()

Übung

gapminder-Package



Übung

gapminder-Package



country continent year lifeExp pop gdpPercap
Afghanistan Asia 1952 28.801 8425333 779.4453
Afghanistan Asia 1957 30.332 9240934 820.8530
Afghanistan Asia 1962 31.997 10267083 853.1007
Afghanistan Asia 1967 34.020 11537966 836.1971
Afghanistan Asia 1972 36.088 13079460 739.9811
Afghanistan Asia 1977 38.438 14880372 786.1134

Übung

Entwicklung der Lebenserwartung

Wie hat sich die Lebenserwartung in Afghanistan im Vergleich zu Albanien entwickelt?

Erstellen Sie einen Plot der …

  • die Entwicklung der Lebenserwartung anzeigt
  • die Lebenserwartung sollen als Punkte angezeigt werden
  • die Größe der Punkte soll der Population entsprichen
  • das Design soll jenem des Wall-Street-Journals entsprechen

Tipp: Nutzen Sie das für das design das ggthemes-Package

Übung

Entwicklung der Lebenserwartung

So soll Ihr Plot aussehen



Übung

Entwicklung der Lebenserwartung

Lösung

gapminder |> 
  filter(country == c("Afghanistan", "Albania")) |> 
  ggplot(aes(x = year,
             y = lifeExp,
             color = country)) +
  geom_point(aes(size = pop),
             show.legend = FALSE) +
  geom_line() +
  scale_x_continuous(limits = c(1950, 2010),
                     n.breaks = 10) + 
  scale_y_continuous(limits = c(0, 80)) +
  labs(title = "Lebenserwartung",
       x = "Jahr",
       y = "Lebenserwartung") +
  ggthemes::theme_wsj(color = "gray") +
  theme(legend.title=element_blank())